A web search engine directs a user's search, or query, to a distributor server, which in, turn forwards the query to a front-end server. The front-end server may contain queries and corresponding results or may consult with a back-end database for the results of queries. The web search engine often receives repeated queries from users entering the same search terms. Recent queries and their results may be maintained in the front-end caches of the front-end server for a predetermined amount of time, since it is more efficient and less time-consuming to consult the front-end cache for the desired results than it is to consult the back-end database, which contains a full web index and is typically larger then the front-end cache. A full web index may include all available web results, such as web pages; therefore, resulting in a time-consuming search since the index is much larger than the results stored at the front-end cache. However, if the desired results are not found in the front-end cache, the back-end database may be consulted.
In addition to storing recent queries and results, the front-end caches may also serve as a record of useful searches, which may include those results which users more frequently have consulted or those results which a system administrator believes will be consulted.
A user typically must enter a full search term or query in order to be presented with relevant results. If a portion of a query, such as the first few characters, is entered, the user is often presented with error messages or incorrect results. Additionally, if a user is unsure of the query to enter in order to receive results, the user must individually enter several queries and sort through the results to find desired web pages, for example. It would be desirable for a user to enter a portion of a query and receive relevant results for a group of queries beginning with the entered portion. Additionally, as the user continues to enter the query, thereby extending the portion, it would be desirable for the results to automatically adjust as the query changes.
Additionally, such a portion-querying mechanism would be further desirable if resources were preserved and operations completed faster by further utilization of the front-end cache.